package co.com.coomeva.adminEvaluacion.modelo.persistencia;

import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.criterion.Example;

import co.com.coomeva.adminEvaluacion.modelo.entidades.EmpleadoBasicoV;

/**
 * A data access object (DAO) providing persistence and search support for
 * EmpleadoBasicoV entities. Transaction control of the save(), update() and
 * delete() operations can directly support Spring container-managed
 * transactions or they can be augmented to handle user-managed Spring
 * transactions. Each of these methods provides additional information for how
 * to configure it for the desired type of transaction control.
 * 
 * @see co.com.coomeva.adminEvaluacion.modelo.entidades.EmpleadoBasicoV
 * @author MyEclipse Persistence Tools
 */

public class EmpleadoBasicoVDAO extends BaseHibernateDAO {
	private static final Log log = LogFactory.getLog(EmpleadoBasicoVDAO.class);
	// property constants
	public static final String EMP_APELLIDO1 = "empApellido1";
	public static final String EMP_APELLIDO2 = "empApellido2";
	public static final String EMP_NOMBRE = "empNombre";
	public static final String EMP_TIPO_IDENTIF = "empTipoIdentif";
	public static final String EMP_CEDULA = "empCedula";
	public static final String EMP_SEXO = "empSexo";
	public static final String EMP_EMPRESA = "empEmpresa";
	public static final String EMPRESA_NOMBRE = "empresaNombre";
	public static final String GERENCIA_NOMBRE = "gerenciaNombre";
	public static final String EMP_DIVISION = "empDivision";
	public static final String DIVISION_NOMBRE = "divisionNombre";
	public static final String EMP_DEPTO = "empDepto";
	public static final String DEPTO_NOMBRE = "deptoNombre";
	public static final String EMP_EN5 = "empEn5";
	public static final String EN5_NOMBRE = "en5Nombre";
	public static final String EMP_EN6 = "empEn6";
	public static final String EN6_NOMBRE = "en6Nombre";
	public static final String EMP_SOCIEDAD = "empSociedad";
	public static final String NOMBRE_SOCIEDAD = "nombreSociedad";
	public static final String SOCIEDAD_RAZON_SOCIAL = "sociedadRazonSocial";
	public static final String EMP_LOCALIDAD = "empLocalidad";
	public static final String NOMBRE_LOCALIDAD = "nombreLocalidad";
	public static final String EMP_CLASE_EMPLEADO = "empClaseEmpleado";
	public static final String EMP_CC_CONTABLE = "empCcContable";
	public static final String CENCOS_NOMBRE = "cencosNombre";
	public static final String EMP_NRO_CONTRATO = "empNroContrato";
	public static final String EMP_CARGO = "empCargo";
	public static final String CARGO_NOMBRE = "cargoNombre";
	public static final String EMP_GRADO_CODIGO = "empGradoCodigo";
	public static final String EMP_NRO_CARGO = "empNroCargo";
	public static final String EMP_NIVEL = "empNivel";
	public static final String EMP_ESTADO = "empEstado";
	public static final String EMP_CAUSA_RETIRO = "empCausaRetiro";
	public static final String EMP_EMAIL = "empEmail";
	public static final String EMP_IND_COMPAG = "empIndCompag";
	public static final String USUARIO_RED = "usuarioRed";
	public static final String EMP_TIPO_NOMINA = "empTipoNomina";
	public static final String EMP_INST_CODIGO = "empInstCodigo";

	public void save(EmpleadoBasicoV transientInstance) {
		log.debug("saving EmpleadoBasicoV instance");
		try {
			getSession().save(transientInstance);
			log.debug("save successful");
		} catch (RuntimeException re) {
			log.error("save failed", re);
			throw re;
		}
	}

	public void delete(EmpleadoBasicoV persistentInstance) {
		log.debug("deleting EmpleadoBasicoV instance");
		try {
			getSession().delete(persistentInstance);
			log.debug("delete successful");
		} catch (RuntimeException re) {
			log.error("delete failed", re);
			throw re;
		}
	}

	public EmpleadoBasicoV findById(java.lang.String id) {
		log.debug("getting EmpleadoBasicoV instance with id: " + id);
		try {
			EmpleadoBasicoV instance = (EmpleadoBasicoV) getSession()
					.get(
							"co.com.coomeva.adminEvaluacion.modelo.entidades.EmpleadoBasicoV",
							id);
			return instance;
		} catch (RuntimeException re) {
			log.error("get failed", re);
			throw re;
		}
	}

	public List findByExample(EmpleadoBasicoV instance) {
		log.debug("finding EmpleadoBasicoV instance by example");
		try {
			List results = getSession()
					.createCriteria(
							"co.com.coomeva.adminEvaluacion.modelo.entidades.EmpleadoBasicoV")
					.add(Example.create(instance)).list();
			log.debug("find by example successful, result size: "
					+ results.size());
			return results;
		} catch (RuntimeException re) {
			log.error("find by example failed", re);
			throw re;
		}
	}

	public List findByProperty(String propertyName, Object value) {
		log.debug("finding EmpleadoBasicoV instance with property: "
				+ propertyName + ", value: " + value);
		try {
			String queryString = "from EmpleadoBasicoV as model where model."
					+ propertyName + "= ?";
			Query queryObject = getSession().createQuery(queryString);
			queryObject.setParameter(0, value);
			return queryObject.list();
		} catch (RuntimeException re) {
			log.error("find by property name failed", re);
			throw re;
		}
	}

	public List findByEmpApellido1(Object empApellido1) {
		return findByProperty(EMP_APELLIDO1, empApellido1);
	}

	public List findByEmpApellido2(Object empApellido2) {
		return findByProperty(EMP_APELLIDO2, empApellido2);
	}

	public List findByEmpNombre(Object empNombre) {
		return findByProperty(EMP_NOMBRE, empNombre);
	}

	public List findByEmpTipoIdentif(Object empTipoIdentif) {
		return findByProperty(EMP_TIPO_IDENTIF, empTipoIdentif);
	}

	public List findByEmpCedula(Object empCedula) {
		return findByProperty(EMP_CEDULA, empCedula);
	}

	public List findByEmpSexo(Object empSexo) {
		return findByProperty(EMP_SEXO, empSexo);
	}

	public List findByEmpEmpresa(Object empEmpresa) {
		return findByProperty(EMP_EMPRESA, empEmpresa);
	}

	public List findByEmpresaNombre(Object empresaNombre) {
		return findByProperty(EMPRESA_NOMBRE, empresaNombre);
	}

	public List findByGerenciaNombre(Object gerenciaNombre) {
		return findByProperty(GERENCIA_NOMBRE, gerenciaNombre);
	}

	public List findByEmpDivision(Object empDivision) {
		return findByProperty(EMP_DIVISION, empDivision);
	}

	public List findByDivisionNombre(Object divisionNombre) {
		return findByProperty(DIVISION_NOMBRE, divisionNombre);
	}

	public List findByEmpDepto(Object empDepto) {
		return findByProperty(EMP_DEPTO, empDepto);
	}

	public List findByDeptoNombre(Object deptoNombre) {
		return findByProperty(DEPTO_NOMBRE, deptoNombre);
	}

	public List findByEmpEn5(Object empEn5) {
		return findByProperty(EMP_EN5, empEn5);
	}

	public List findByEn5Nombre(Object en5Nombre) {
		return findByProperty(EN5_NOMBRE, en5Nombre);
	}

	public List findByEmpEn6(Object empEn6) {
		return findByProperty(EMP_EN6, empEn6);
	}

	public List findByEn6Nombre(Object en6Nombre) {
		return findByProperty(EN6_NOMBRE, en6Nombre);
	}

	public List findByEmpSociedad(Object empSociedad) {
		return findByProperty(EMP_SOCIEDAD, empSociedad);
	}

	public List findByNombreSociedad(Object nombreSociedad) {
		return findByProperty(NOMBRE_SOCIEDAD, nombreSociedad);
	}

	public List findBySociedadRazonSocial(Object sociedadRazonSocial) {
		return findByProperty(SOCIEDAD_RAZON_SOCIAL, sociedadRazonSocial);
	}

	public List findByEmpLocalidad(Object empLocalidad) {
		return findByProperty(EMP_LOCALIDAD, empLocalidad);
	}

	public List findByNombreLocalidad(Object nombreLocalidad) {
		return findByProperty(NOMBRE_LOCALIDAD, nombreLocalidad);
	}

	public List findByEmpClaseEmpleado(Object empClaseEmpleado) {
		return findByProperty(EMP_CLASE_EMPLEADO, empClaseEmpleado);
	}

	public List findByEmpCcContable(Object empCcContable) {
		return findByProperty(EMP_CC_CONTABLE, empCcContable);
	}

	public List findByCencosNombre(Object cencosNombre) {
		return findByProperty(CENCOS_NOMBRE, cencosNombre);
	}

	public List findByEmpNroContrato(Object empNroContrato) {
		return findByProperty(EMP_NRO_CONTRATO, empNroContrato);
	}

	public List findByEmpCargo(Object empCargo) {
		return findByProperty(EMP_CARGO, empCargo);
	}

	public List findByCargoNombre(Object cargoNombre) {
		return findByProperty(CARGO_NOMBRE, cargoNombre);
	}

	public List findByEmpGradoCodigo(Object empGradoCodigo) {
		return findByProperty(EMP_GRADO_CODIGO, empGradoCodigo);
	}

	public List findByEmpNroCargo(Object empNroCargo) {
		return findByProperty(EMP_NRO_CARGO, empNroCargo);
	}

	public List findByEmpNivel(Object empNivel) {
		return findByProperty(EMP_NIVEL, empNivel);
	}

	public List findByEmpEstado(Object empEstado) {
		return findByProperty(EMP_ESTADO, empEstado);
	}

	public List findByEmpCausaRetiro(Object empCausaRetiro) {
		return findByProperty(EMP_CAUSA_RETIRO, empCausaRetiro);
	}

	public List findByEmpEmail(Object empEmail) {
		return findByProperty(EMP_EMAIL, empEmail);
	}

	public List findByEmpIndCompag(Object empIndCompag) {
		return findByProperty(EMP_IND_COMPAG, empIndCompag);
	}

	public List findByUsuarioRed(Object usuarioRed) {
		return findByProperty(USUARIO_RED, usuarioRed);
	}

	public List findByEmpTipoNomina(Object empTipoNomina) {
		return findByProperty(EMP_TIPO_NOMINA, empTipoNomina);
	}

	public List findByEmpInstCodigo(Object empInstCodigo) {
		return findByProperty(EMP_INST_CODIGO, empInstCodigo);
	}

	public List findAll() {
		log.debug("finding all EmpleadoBasicoV instances");
		try {
			String queryString = "from EmpleadoBasicoV";
			Query queryObject = getSession().createQuery(queryString);
			return queryObject.list();
		} catch (RuntimeException re) {
			log.error("find all failed", re);
			throw re;
		}
	}

	public EmpleadoBasicoV merge(EmpleadoBasicoV detachedInstance) {
		log.debug("merging EmpleadoBasicoV instance");
		try {
			EmpleadoBasicoV result = (EmpleadoBasicoV) getSession().merge(
					detachedInstance);
			log.debug("merge successful");
			return result;
		} catch (RuntimeException re) {
			log.error("merge failed", re);
			throw re;
		}
	}

	public void attachDirty(EmpleadoBasicoV instance) {
		log.debug("attaching dirty EmpleadoBasicoV instance");
		try {
			getSession().saveOrUpdate(instance);
			log.debug("attach successful");
		} catch (RuntimeException re) {
			log.error("attach failed", re);
			throw re;
		}
	}

	public void attachClean(EmpleadoBasicoV instance) {
		log.debug("attaching clean EmpleadoBasicoV instance");
		try {
			getSession().lock(instance, LockMode.NONE);
			log.debug("attach successful");
		} catch (RuntimeException re) {
			log.error("attach failed", re);
			throw re;
		}
	}
}